package com.EAsystem.service;

import com.EAsystem.entity.Grade;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;

/**
 * 成绩服务接口
 */
public interface GradeService {

    
    /**
     * 分页查询所有成绩
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 分页结果
     */
    PageInfo<Grade> findAllByPage(int pageNum, int pageSize);
    
    /**
     * 根据条件查询成绩
     * @param grade 查询条件
     * @return 成绩列表
     */
    List<Grade> findByCondition(Grade grade);
    
    /**
     * 根据条件分页查询成绩
     * @param grade 查询条件
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 分页结果
     */
    PageInfo<Grade> findByConditionPage(Grade grade, int pageNum, int pageSize);
    
    /**
     * 根据教师ID分页查询该教师课程的成绩记录
     * @param teacherId 教师ID
     * @param courseId 课程ID（可选，为null时查询该教师所有课程）
     * @param studentSearch 学生姓名搜索（可选）
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 分页结果
     */
    PageInfo<Grade> getGradesByTeacherWithPage(Integer teacherId, Long courseId, String studentSearch, int pageNum, int pageSize);
    
    /**
     * 根据ID查询成绩记录
     * @param id 成绩记录ID
     * @return 成绩记录
     */
    Grade findById(Long id);
    
    /**
     * 添加成绩记录
     * @param grade 成绩记录
     * @return 添加结果
     */
    boolean add(Grade grade);
    
    /**
     * 更新成绩记录
     * @param grade 成绩记录
     * @return 更新结果
     */
    boolean update(Grade grade);
    
    /**
     * 更新平时分
     * @param id 成绩记录ID
     * @param regularScore 平时分
     * @return 更新结果
     */
    boolean updateRegularScore(Integer id, Double regularScore);
    
    /**
     * 更新考试分
     * @param id 成绩记录ID
     * @param examScore 考试分
     * @return 更新结果
     */
    boolean updateExamScore(Integer id, Double examScore);
    
    /**
     * 删除成绩记录
     * @param id 成绩记录ID
     * @return 删除结果
     */
    boolean delete(Integer id);
    

    

}